重载和返回类型

  重载解析中将不考虑返回类型。这样规定的理由就是要保持对重载的解析只是针对单独的运算符(11.2.1节、11.2.4节)或函数调用,与调用的环境无关。考虑

    float sqrt(float);
    double sqrt(double);

    void f(double da, float fla)
    {
        float fl = sqrt(da);            // 调用sqrt(double)
        double d = sqrt(da);            // 调用sqrt(double)
        fl = sqrt(fla);                 // 调用sqrt(float)
        d = sqrt(fla);                  // 调用sqrt(float)
    }

如果把返回类型也考虑在内,我们就无法继续去孤立地去看一个sqrt()调用,并由此确定到底应该调用哪个函数了。

🔚